import java.util.ArrayList;
import java.util.HashSet;

public class MazoCamino extends Mazo {		
	
	//GETTERS AUXILIARES
	//devuelve el inicio del camino
	public Ciudad getInicio() {
		return this.cartas.get(0).getCiudad();
	}

	//devuelve el final del camino
	public Ciudad getFin() {
		return this.cartas.get(this.cartas.size()-1).getCiudad();
	}
	
	//metodo para devolver un set de regiones por donde pasa el camino
	public HashSet<Region> getRegiones(){
		HashSet<Region> regiones = new HashSet<Region>();
		for(Carta c : this.cartas){
			if(!regiones.contains(c.getCiudad().getRegion())){
				regiones.add(c.getCiudad().getRegion());
			}
		}
		
		return regiones;
	}
	
	//devuelve el listado de ciudades por donde pasa el camino
	public ArrayList<Ciudad> getCiudades(){
		ArrayList<Ciudad> ciudades = new ArrayList<Ciudad>();
		for(Carta c : this.cartas){
			ciudades.add(c.getCiudad());
		}
		
		return ciudades;
	}
	
	//devuelve la longitud del camino
	public int getLongitudCamino(){
		return this.cartas.size();
	}
	
	//METODOS
	//agrega la carta al inicio del camino
	public void agregarAlInicio(Carta c) {
		this.cartas.add(0, c);		
	}
	
	//agrega la carta al final del camino
	public void agregarAlFinal(Carta c) {
		this.cartas.add(c);
	}
	
	//verifica si la ciudad esta en el camino
	public boolean contieneCiudad(Carta cExt){
		for(Carta c : this.cartas){
			if(c.getCiudad() == cExt.getCiudad()){
				return true;
			}
		}
		
		return false;
	}		
	
	//verifica si todas las cartas del mazo son de ciudades de una misma regino
	public boolean esUniRegion(){
		if(!this.cartas.isEmpty()){
			Region reg = this.cartas.get(0).getCiudad().getRegion();
			for(Carta c : this.cartas){
				if(c.getCiudad().getRegion() != reg){
					return false;
				}
			}
		}
		
		return true;		
	}
}
